# -*- coding: utf-8 -*-
"""
发布名为test的Agent
"""

import os
import sys
import json
from pathlib import Path
from dotenv import load_dotenv

# 添加项目根目录到路径
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))

# 加载环境变量
load_dotenv(project_root / '.env')

from scripts.auto_publish_agent import AgentAutoPublisher


def main():
    """发布test agent"""
    print("=" * 80)
    print("开始发布 test Agent")
    print("=" * 80)

    # Agent配置
    agent_config = {
        "name": "test",
        "description": "这是一个测试Agent",
        "mode": "ChatAgent",
        "model_id": "ep-20241231203825-nwz4f",  # 使用配置的模型ID
        "prompt": "你是一个友好的测试AI助手，可以帮助用户解答各种问题。",
        "welcome_message": "你好！我是test Agent，有什么可以帮助你的吗？",

        # 发布配置
        "version_desc": "test agent 首次发布",
        "category_codes": ["Other"],  # 其他分类
        "auth_type": "Public",  # 公开
        "auth_range_type": "All"  # 全部可见
    }

    # 创建发布器
    publisher = AgentAutoPublisher()

    try:
        # 执行自动发布（不等待审核，因为可能需要时间）
        print("\n[信息] 开始创建和发布流程...")
        print("[信息] 注意：发布后需要等待审核，此脚本不会等待审核完成")

        result = publisher.auto_publish(
            agent_config=agent_config,
            version="1.0.0",
            wait_approval=False  # 不等待审核，避免长时间等待
        )

        # 显示结果
        print("\n" + "=" * 80)
        print("发布完成！请保存以下重要信息：")
        print("=" * 80)
        print(f"\nAppID: {result['app_id']}")
        print(f"API Key: {result['api_key']}")
        print(f"API Key ID: {result['api_key_id']}")
        print(f"Publish ID: {result['publish_id']}")

        # 保存结果到文件
        output_file = project_root / "scripts" / "test_agent_result.json"
        with open(output_file, "w", encoding="utf-8") as f:
            json.dump(result, f, ensure_ascii=False, indent=2)

        print(f"\n[信息] 完整结果已保存到: {output_file}")

        print("\n" + "=" * 80)
        print("下一步操作：")
        print("=" * 80)
        print("1. 等待审核通过（可能需要几分钟到几小时）")
        print("2. 审核通过后，可以在智能体中心找到该Agent")
        print("3. 使用AppID和API Key可以通过API调用该Agent")
        print("=" * 80)

        return result

    except Exception as e:
        print(f"\n[错误] 发布失败: {str(e)}")
        import traceback
        traceback.print_exc()
        sys.exit(1)


if __name__ == "__main__":
    main()
